From 9294e55c34a7410445b7801d016ec528bb0477f2 Mon Sep 17 00:00:00 2001 From: Alex Williamson Date: Wed, 12 Dec 2007 10:47:54 -0700 Subject: [PATCH] [IA64] Fix TLB purge and reload for xen heap in MCA handler Xen might panic when the TLB related MCA occurred because Xen virtual address space moved to 0xf400000004000000. The following patch fixes it. Signed-off-by: Kazuhiro Suzuki --- xen/arch/ia64/linux-xen/mca_asm.S | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/xen/arch/ia64/linux-xen/mca_asm.S b/xen/arch/ia64/linux-xen/mca_asm.S index 641be79ceb..fc770a09c3 100644 --- a/xen/arch/ia64/linux-xen/mca_asm.S +++ b/xen/arch/ia64/linux-xen/mca_asm.S @@ -283,6 +283,19 @@ ia64_do_tlb_purge: ;; srlz.d ;; +#ifdef XEN + /* xen heap is identity mapped */ + mov r19=ip + ;; + dep r17=0,r19,0,KERNEL_TR_PAGE_SHIFT + ;; + dep r17=-1,r17,60,4 + ;; + ptr.d r17,r18 + ;; + srlz.d + ;; +#endif // 2. Purge DTR for PERCPU data. movl r16=PERCPU_ADDR mov r18=PERCPU_PAGE_SHIFT<<2 @@ -418,6 +431,18 @@ ia64_reload_tr: srlz.i srlz.d ;; +#ifdef XEN + /* xen heap is identity mapped */ + mov r16=IA64_TR_XEN_HEAP_REGS + dep r17=-1,r17,60,4 + ;; + mov cr.ifa=r17 + ;; + itr.d dtr[r16]=r18 + ;; + srlz.d + ;; +#endif // 2. Reload DTR register for PERCPU data. GET_THIS_PADDR(r2, ia64_mca_per_cpu_pte) ;; -- 2.30.2